import os
'''
1）
class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
    def calculate_pay(self):
        return self.salary
# 任务1：创建Manager类继承Employee
# 添加bonus属性
# 重写calculate_pay()方法计算总薪资(salary + bonus)
# 任务2：创建HourlyEmployee类继承Employee
# 添加hours_worked属性
# 重写calculate_pay()方法计算时薪(salary * hours_worked)
'''
class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
    def calculate_pay(self):
        return self.salary

class Manager(Employee):
    def __init__(self,name,salary,bonus):
        super().__init__( name,salary)
        self.bonus = bonus
    def calculate_pay(self):
        return self.salary + self.bonus
class HourlyEmployee(Employee):
    def __init__(self,name,salary,hours_worked):
        super().__init__(name,salary)
        self.hours_worked = hours_worked
    def calculate_pay(self):
        return self.salary * self.hours_worked

'''
2）设计一个简单的游戏系统，包含不同类型的角色（战士、法师、射手），
每个角色都有attack()方法，但实现方式不同。请用代码展示如何利用多态来实现这个系统。
战士：近战物理
法师：远程法术
射手：远程物理
'''
class Hero:
    '''
    角色大类
    '''
    def __init__(self,HP,MP):
        '''
        角色基础信息
        :param HP:血量
        :param MP: 蓝条
        '''
        self.HP = HP
        self.MP = MP
    def attack(self):
        #进攻方式，由于每种角色输出手法差异，在重构中实现
        pass

class T(Hero):#战士Tank
    def __init__(self,HP,MP):
        super().__init__(HP,MP)
    def attack(self):
        return '战士，造成物理近战伤害'

class D(Hero):#射手DPS
    def __init__(self,HP,MP):
        super().__init__(HP,MP)
    def attack(self):
        return '射手，造成远程物理伤害'

class H(Hero):#法师healing
    def __init__(self,HP,MP):
        super().__init__(HP,MP)
    def attack(self):
        return '法师，造成远程魔法伤害'

def fight(Hero:Hero):
    print(Hero.attack())


'''
3）获取一个路径下的所有txt文件，包括子路径下的
'''
txt_list = []
def get_txt(path):
    """
    获取一个路径下面的所有txt
    :param path: 路径
    :return: None
    """

        #用于存放文件和路径的字典
    # 获取该路径下面的所有文件和文件夹
    filelist = os.listdir(path)
    #拼接一个完整的路径，才能进行文件的判断
    for filepath in filelist:
        filepath = path+"\\" + filepath

        # 判断是文件 打印
        if os.path.isfile(filepath):
            if filepath.endswith('.txt'):
                filename = os.path.basename(filepath)
                txt_list.append(filename)
                # filename=os.path.basename(path)#文件名称存为key
                # txt_list.append(filename) # 绝对路径存为值
        else:
            # 判断是文件夹 递归get_file(path):
            get_txt(filepath)
    print(txt_list)



if __name__ == '__main__':
    path= r"/XQD"
    Player1 = T(HP=10,MP=20)#玩家1扮演战士
    Player2 = D(HP=10,MP=20)#射手
    Player3 = H(HP=10,MP=20)#法师
    fight(Player1)
    fight(Player2)
    fight(Player3)
    get_txt(path)